package com.ckjava.dao.base;

import com.ckjava.entity.base.BaseMybatisEntity;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface BaseMyBatisDao<E extends BaseMybatisEntity> {

    /**
     * 根据参数获取数据列表
     *
     * @param entity
     * @return
     */
    List<E> getByParam(E entity);

    /**
     * 分页获取列表
     * @param entity
     * @return
     */
    List<E> getPage(E entity);

    /**
     * 获取分页查询条件的记录总数
     * @param entity
     * @return
     */
    int getCount(E entity);

    /**
     * 获取全部
     *
     * @return
     */
    List<E> getAll();

    /**
     * 保存
     * @param entity
     * @return
     */
    void save(E entity);

    /**
     * 修改
     * @param entity
     * @return
     */
    int update(E entity);

    /**
     * 删除
     * @param id
     * @return
     */
    int delete(Long id);


    /**
     * 物理删除
     *
     * @param id
     * @return
     */
    int deletePhysical(Long id);

    /**
     * 根据主键 id 获取
     * @param id
     * @return
     */
    E get(long id);
}
